As computer systems have advanced, graphics processing units (GPUs) have become increasingly advanced both in complexity and computing power. GPUs are thus used to handle processing of increasingly large and complex graphics. Some GPUs use frame buffer compression to reduce communication bandwidth requirements to the frame buffer memory hierarchy thereby increasing performance. Not all of the frame buffer may be compressed even with GPUs that implement frame buffer compression.
Unfortunately, system components or clients which are not compression aware may need to access the frame buffer directly. In order for those clients to be able to access the frame buffer, the frame buffer needs to be decompressed. One conventional solution involves tracking which areas of the frame buffer will be accessed by non-compression aware clients and allocating uncompressed memory to the areas of the frame buffer. As a result of not using compression, this conventional solution loses the high speed benefits of frame buffer compression.
Another conventional solution involves copying the compressed data and writing it in an uncompressed form. This conventional solution requires a read and write for every pixel in the frame buffer regardless of whether it was compressed thereby wasting power and time on reading uncompressed data. Each read of uncompressed data is especially costly from a performance perspective.